<template>
<div class="body">
  <div class="container" :class="{ 'right-panel-active': isSignUpActive }">
    <!-- 登录表单 -->
    <div class="container__form container--signin" v-if="!isSignUpActive">
      <form class="form" id="form2">
        <h2 class="form__title">登录</h2>
        <input type="text" v-model="usersData.username" placeholder="用户" class="input" />
        <input type="password" v-model="usersData.password" placeholder="密码" class="input" />
        <button type="button" class="btn" @click="signIn">登录</button>
      </form>
    </div>

    <!-- 注册表单 -->
    <div class="container__form container--signup" v-if="isSignUpActive">
      <form class="form" id="form1">
        <h2 class="form__title">注册</h2>
        <input type="text" v-model="usersData.username" placeholder="用户" class="input" />
        <input type="password" v-model="usersData.password" placeholder="密码" class="input" />
        <button type="button" class="btn" @click="signUp">注册</button>
      </form>
    </div>

    <!-- 切换按钮 -->
    <div class="container__overlay">
      <div class="overlay">
        <div class="overlay__panel overlay--left">
          <button class="btn" @click="isSignUpActive = false">登录</button>
        </div>
      </div>
    </div>
  </div>
</div>
</template>

<script lang="ts">
import { defineComponent, onBeforeMount, onMounted, reactive, toRefs } from 'vue'
import { authLogin } from "./Authapi"
import { ElMessage } from 'element-plus'
import { useRouter } from 'vue-router'
export default {
  setup() {
      const state = reactive({
        isSignUpActive: false, // 控制注册表单是否激活
        usersData:{
          username: null,
          //email: null,
          password: null,
        }
      })
      const router = useRouter(); // 获取 router 实例
      const signIn = () => {
        //测试用：
        // localStorage.setItem('token', "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNzQ3NDg0NDg3fQ.UgrAVQ4xXq26E1Sd1_R0FSiZyZwPVGEWnCc4hicQsT8")
        // localStorage.setItem('superAdmin', JSON.stringify(true))
        // localStorage.setItem('username','admin')
        // router.push(`/home/sale/statistic`)
        authLogin(state.usersData).then((res)=>{
          console.log("res",res)
          if (res.data.success) {
            // 存储 token 到 localStorage
            localStorage.setItem('token', res.data.data.token)
            localStorage.setItem('username',state.usersData.username)
            // 存储用户角色信息

            // 循环遍历roles数组进行赋值
            const roles = res.data.data.roles;
            for (let i = 0; i < roles.length; i++) {
              const role = roles[i];
              if (role === 'admin') {
                //超管
                localStorage.setItem('superAdmin', JSON.stringify(true));
                // 跳转到主页
                router.push(`/home/sale/statistic`)
                break
              } else if (role === 'purchaseSpecialist') {
                //采购管理员
                localStorage.setItem('purchaseAdmin', JSON.stringify(true));
                // 跳转到采购页面
                router.push('/home/purchase/purchaseStatistics')
                break
              } else if (role ==='saleSpecialist') {
                //销售管理员
                localStorage.setItem('saleAdmin', JSON.stringify(true));
                // 跳转到销售页面
                router.push(`/home/sale/statistic`)
                break
              } else if (role === 'warehouseKeeper') {
                //库存管理员
                localStorage.setItem('warehouseAdmin', JSON.stringify(true));
                // 跳转到库存页面
                router.push(`/home/inventory/inventoryPage`)
                break
              } else if (role === 'productionManager') {
                //生产管理员
                localStorage.setItem('productionAdmin', JSON.stringify(true));
                // 跳转到生产页面
                router.push(`/home/produce/produceTJ`)
                break
              }
            }
            ElMessage.success('登录成功')
          }else {
            ElMessage.error('登录失败')
          }

        })
      }
      const signUp = () => {
          console.log("usersData",state.usersData)
      }
      onBeforeMount(() => {
        localStorage.removeItem('username')
        localStorage.removeItem('token')
        localStorage.removeItem('superAdmin')
        localStorage.removeItem('purchaseAdmin')
        localStorage.removeItem('saleAdmin')
        localStorage.removeItem('warehouseAdmin')
        localStorage.removeItem('productionAdmin')
      })
    return {
        ...toRefs(state),
        signIn,
        signUp,
      }
  }
};
</script>

<style  scoped>
    :root {
      /* COLORS */
      --white: #e9e9e9;
      --gray: #333;
      --blue: #0367a6;
      --lightblue: #008997;

      /* RADII */
      --button-radius: 0.7rem;

      /* SIZES */
      --max-width: 758px;
      --max-height: 420px;

      font-size: 16px;
      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen,
        Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
    }

    .body {
      align-items: center;
      background-color: var(--white,#e9e9e9);
      background: url("../../assets/pages/Auth/auth.jpg");
      background-attachment: fixed;
      background-position: center;
      background-repeat: no-repeat;
      background-size: cover;
      display: grid;
      height: 100vh;
      place-items: center;
    }

    .form__title {
      font-weight: 300;
      margin: 0;
      margin-bottom: 1.25rem;
    }

    .link {
      color: var(--gray,#333);
      font-size: 0.9rem;
      margin: 1.5rem 0;
      text-decoration: none;
    }

    .container {
      background-color: var(--white,#e9e9e9);
      border-radius: var(--button-radius,0.7rem);
      box-shadow: 0 0.9rem 1.7rem rgba(0, 0, 0, 0.25),
        0 0.7rem 0.7rem rgba(0, 0, 0, 0.22);
      height: var(--max-height,420px);
      max-width: var(--max-width,758px);
      overflow: hidden;
      position: relative;
      width: 100%;
    }

    .container__form {
      height: 100%;
      position: absolute;
      top: 0;
      transition: all 0.6s ease-in-out;
    }

    .container--signin {
      left: 0;
      width: 50%;
      z-index: 2;
    }

    .container.right-panel-active .container--signin {
      transform: translateX(100%);
    }

    .container--signup {
      left: 0;
      opacity: 0;
      width: 50%;
      z-index: 1;
    }

    .container.right-panel-active .container--signup {
      animation: show 0.6s;
      opacity: 1;
      transform: translateX(100%);
      z-index: 5;
    }

    .container__overlay {
      height: 100%;
      left: 50%;
      overflow: hidden;
      position: absolute;
      top: 0;
      transition: transform 0.6s ease-in-out;
      width: 50%;
      z-index: 100;
    }

    .container.right-panel-active .container__overlay {
      transform: translateX(-100%);
    }

    .overlay {
      background-color: var(--lightblue,#008997);
      background: url("../../assets/pages/Auth/auth.jpg");
      background-attachment: fixed;
      background-position: center;
      background-repeat: no-repeat;
      background-size: cover;
      height: 100%;
      left: -100%;
      position: relative;
      transform: translateX(0);
      transition: transform 0.6s ease-in-out;
      width: 200%;
    }

    .container.right-panel-active .overlay {
      transform: translateX(50%);
    }

    .overlay__panel {
      align-items: center;
      display: flex;
      flex-direction: column;
      height: 100%;
      justify-content: center;
      position: absolute;
      text-align: center;
      top: 0;
      transform: translateX(0);
      transition: transform 0.6s ease-in-out;
      width: 50%;
    }

    .overlay--left {
      transform: translateX(-20%);
    }

    .container.right-panel-active .overlay--left {
      transform: translateX(0);
    }

    .overlay--right {
      right: 0;
      transform: translateX(0);
    }

    .container.right-panel-active .overlay--right {
      transform: translateX(20%);
    }

    .btn {
      background-color: var(--blue,#0367a6);
      background-image: linear-gradient(90deg, var(--blue,#0367a6) 0%, var(--lightblue,#008997) 74%);
      border-radius: 20px;
      border: 1px solid var(--blue,#0367a6);
      color: var(--white,#e9e9e9);
      cursor: pointer;
      font-size: 0.8rem;
      font-weight: bold;
      letter-spacing: 0.1rem;
      padding: 0.9rem 4rem;
      text-transform: uppercase;
      transition: transform 80ms ease-in;
    }

    .form>.btn {
      margin-top: 1.5rem;
    }

    .btn:active {
      transform: scale(0.95);
    }

    .btn:focus {
      outline: none;
    }

    .form {
      background-color: var(--white,#e9e9e9);
      display: flex;
      align-items: center;
      justify-content: center;
      flex-direction: column;
      padding: 0 3rem;
      height: 100%;
      text-align: center;
    }

    .input {
      background-color: #fff;
      border: none;
      padding: 0.9rem 0.9rem;
      margin: 0.5rem 0;
      width: 100%;
    }

    @keyframes show {

      0%,
      49.99% {
        opacity: 0;
        z-index: 1;
      }

      50%,
      100% {
        opacity: 1;
        z-index: 5;
      }
    }

</style>
